The invention relates to apparatus and techniques for accomplishing DMA (direct memory access) operations in computer systems, especially data acquisition systems connected to a large number of peripheral devices, and more particularly, to a unique peripheral DMA controller system to be used in conjunction with a computer collecting and operating upon data from a large number of peripheral devices.
By way of background, a brief description of DMA will be given User programs can be written to enable a computer to access memory locations. The memory locations can be locations of a computer's internal memory or locations of external memories, such as hard disks, floppy disks, keyboards, and any of a large number of other kinds of peripheral devices such as analog-to-digital converters, digital-to-analog converters, interface adapters, etc., each of which has at least one address by means of which it can be addressed. In many instances, it is highly undesirable to require the computer programmer to keep track of all memory locations and all memory transfers Memory access that is controlled and kept track of by the computer programmer can be referred to as programmed memory access. The programmed computer generates the addresses on an address bus that is coupled to the addressed peripheral device or memory. Often, however, it may be very convenient for an external or peripheral device to be able to completely, almost automatically effectuate a transfer of information from its own storage location to another storage location, such as the computer memory, in such a manner that the user program need not attend to the details of the information transfer. The technique by which such transfers of information are accomplished is referred to as DMA or direct memory access.
Direct memory access techniques commonly are used in data acquisition systems wherein a large number of sequential locations are to be transferred from one memory to another or from one group of non-sequential locations to another group of sequential memory locations of a computer. Typically, in data acquisition systems, one and only one analog-to-digital converter is operated under DMA control to scan a list of analog channels. Prior DMA techniques have not been adequate where there are a large number of peripheral devices with different, nonsequential addresses, because the DMA controller effectuating DMA operations would require a separate channel for each such peripheral device. Providing such multi-channel DMA controllers, one for each peripheral device, would be prohibitively expensive. In the past, most data acquisition systems of the type requiring collection of data from a large number of peripheral devices having nonsequential addresses has been accomplished by polling techniques or by interrupt techniques. Polling techniques have the advantages of simplicity of hardware and software and relatively high operating speed, but are subject to the disadvantage that the collected data is subject to "jitter", i.e., uncertainty as to exactly when the polled events occurred. Such uncertainty in turn may lead to significant errors that are very difficult to detect and correct. Polling techniques make "background operation" very difficult. ("Background operation" is the utilization of the computer to accomplish the data acquisition in a manner that is nearly "invisible" to the operating program.) Polling techniques usually require that a particular computer be "dedicated" to the data acquisition task. This often is unsatisfactory, because it usually would be advantageous to simultaneously use the computer for other functions in addition to the data acquisition functions. Interrupt-based data acquisition techniques generally are slower than polling techniques, due to the "overhead" software and time required for each interrupt operation. Interrupt techniques may cause considerable difficulty with bus contention problems if there are a lot of peripheral devices that are capable of generating interrupts connected to this system. Interrupt-based data acquisition systems also usually require that a computer be dedicated to the data acquisition function.
The overall situation is that until now, there has been no highly satisfactory technique for effectuating stable, high speed, economical, essentially "invisible" acquisition of data from a large number of peripheral devices having nonsequential addresses without encountering the various above-mentioned difficulties.